home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Developer Essentials / DTS Sample Code / Snippets / Graphics & Printing / QuickDraw / Icon Displayƒ / bullMenus.c next >
Encoding:
C/C++ Source or Header  |  1990-07-26  |  2.7 KB  |  153 lines  |  [TEXT/KAHL]

  1. #include "QuickDraw32Bit.h"
  2. /*****
  3.  * bullMenus.c
  4.  *
  5.  *    Routines for Bullseye demo menus.
  6.  *
  7.  *****/
  8.  
  9. extern    WindowPtr bullseyeWindow;
  10. extern    int    width;
  11. extern  GWorldPtr    GgwPtr;
  12.  
  13.  
  14. MenuHandle    appleMenu, fileMenu, editMenu, widthMenu;
  15.  
  16. enum    {
  17.     appleID = 1,
  18.     fileID,
  19.     editID,
  20.     widthID
  21.     };
  22.  
  23. enum    {
  24.     openItem = 1,
  25.     closeItem,
  26.     quitItem = 4
  27.     };
  28.  
  29. /****
  30.  * SetUpMenus()
  31.  *
  32.  *    Set up the menus. Normally, we’d use a resource file, but
  33.  *    for this example we’ll supply “hardwired” strings.
  34.  *
  35.  ****/
  36.  
  37. SetUpMenus()
  38.  
  39. {
  40.     InsertMenu(appleMenu = NewMenu(appleID, "\p\024"), 0);
  41.     InsertMenu(fileMenu = NewMenu(fileID, "\pFile"), 0);
  42.     InsertMenu(editMenu = NewMenu(editID, "\pEdit"), 0);
  43.     DrawMenuBar();
  44.     AddResMenu(appleMenu, 'DRVR');
  45.     AppendMenu(fileMenu, "\pOpen/O;Close/W;(-;Quit/Q");
  46.     AppendMenu(editMenu, "\pUndo/Z;(-;Cut/X;Copy/C;Paste/V;Clear");
  47. }
  48. /* end SetUpMenus */
  49.  
  50.  
  51. /****
  52.  *  AdjustMenus()
  53.  *
  54.  *    Enable or disable the items in the Edit menu if a DA window
  55.  *    comes up or goes away. Our application doesn't do anything with
  56.  *    the Edit menu.
  57.  *
  58.  ****/
  59.  
  60. AdjustMenus()
  61. {
  62.     register WindowPeek wp = (WindowPeek) FrontWindow();
  63.     short kind = wp ? wp->windowKind : 0;
  64.     Boolean DA = kind < 0;
  65.     
  66.     enable(editMenu, 1, DA);
  67.     enable(editMenu, 3, DA);
  68.     enable(editMenu, 4, DA);
  69.     enable(editMenu, 5, DA);
  70.     enable(editMenu, 6, DA);
  71.     
  72.     enable(fileMenu, openItem, !((WindowPeek) bullseyeWindow)->visible);
  73.     enable(fileMenu, closeItem, DA || ((WindowPeek) bullseyeWindow)->visible);
  74.  
  75.     CheckItem(widthMenu, width, true);
  76. }
  77.  
  78.  
  79. static
  80. enable(menu, item, ok)
  81. Handle menu;
  82. {
  83.     if (ok)
  84.         EnableItem(menu, item);
  85.     else
  86.         DisableItem(menu, item);
  87. }
  88.  
  89.  
  90. /*****
  91.  * HandleMenu(mSelect)
  92.  *
  93.  *    Handle the menu selection. mSelect is what MenuSelect() and
  94.  *    MenuKey() return: the high word is the menu ID, the low word
  95.  *    is the menu item
  96.  *
  97.  *****/
  98.  
  99. HandleMenu (mSelect)
  100.  
  101.     long    mSelect;
  102.  
  103. {
  104.     int            menuID = HiWord(mSelect);
  105.     int            menuItem = LoWord(mSelect);
  106.     Str255        name;
  107.     GrafPtr        savePort;
  108.     WindowPeek    frontWindow;
  109.     
  110.     switch (menuID)
  111.       {
  112.       case    appleID:
  113.         GetPort(&savePort);
  114.         GetItem(appleMenu, menuItem, name);
  115.         OpenDeskAcc(name);
  116.         SetPort(savePort);
  117.         break;
  118.     
  119.       case    fileID:
  120.         switch (menuItem)
  121.           {
  122.           case    openItem:
  123.             ShowWindow(bullseyeWindow);
  124.             SelectWindow(bullseyeWindow);
  125.             break;
  126.                                 
  127.           case    closeItem:
  128.             if ((frontWindow = (WindowPeek) FrontWindow()) == 0L)
  129.               break;
  130.               
  131.             if (frontWindow->windowKind < 0)
  132.               CloseDeskAcc(frontWindow->windowKind);
  133.             else if (frontWindow = (WindowPeek) bullseyeWindow)
  134.               HideWindow(bullseyeWindow);
  135.                         break;
  136.                         
  137.           case    quitItem:
  138.               DisposeGWorld(GgwPtr);
  139.             ExitToShell();
  140.             break;
  141.           }
  142.         break;
  143.                   
  144.       case    editID:
  145.         if (!SystemEdit(menuItem-1))
  146.           SysBeep(5);
  147.         break;
  148.         
  149.       }
  150. }
  151. /* end HandleMenu */
  152.  
  153.